'''
Description: 
Author: Zilu
Date: 2021-11-08 16:51:08
Version: 
LastEditTime: 2021-11-08 17:03:04
LastEditors: Zilu
'''

# 使用doctest模块可以运行文档注释中的代码，输出中给出头尾应该有的输出信息，中间众多内容可以用 ... 代替
# doctest严格按照Python交互式命令行的输入和输出来判断测试结果是否正确。
# 只有测试异常的时候，可以用...表示中间一大段烦人的输出。

# 练习：对函数fact(n)编写doctest并执行
def fact(n):
    '''
    Calculate 1*2*...*n
    
    >>> fact(1)
    1
    >>> fact(10)
    3628800
    >>> fact(-1)
    Traceback (most recent call last):
    ...
    ValueError
    '''
    if n < 1:
        raise ValueError()
    if n == 1:
        return 1
    return n * fact(n - 1)

if __name__ == '__main__':
    import doctest
    doctest.testmod()


